#pragma once

#include "ILevel.h"
#include "InfoOverlay.h"

namespace TutorialLevelState {
	enum Enum {
		START,
		WAITING_FOR_SHIP,
		TAP_AND_DRAG_OVERLAY,
		WAITING_FOR_DOCKING,
		UNLOADING_OVERLAY,
		WATING_FOR_UNLOAD,
		LEAVE_SCREEN_OVERLAY,
		WATING_FOR_LEAVE_SCREEN,
	};
}

class Ship;

class Tutorial1Level : public ILevel {

public:

	virtual ~Tutorial1Level();

	void Load( Dock* docks, GameplayBackground* background );
	void Unload();
	
	// return -1 todo nothing
	// return 1 to start a new ship with the provided data
	// return 2 to show an overlay message
	// return 3 if the level is over
	LevelUpdateReturnStatus::Enum Update( DockType::Enum *type, CIwFVec2* p1, CIwFVec2* p2, float dt );
	
	void Draw ();
	
	void ShipAdded( Ship *ship );
	void ShipOutOfScreen( Ship *ship ) {};
	
private:
	TutorialLevelState::Enum m_current_state;
	Ship *m_ship;

	InfoOverlay m_tap_and_drag_overlay;
	InfoOverlay m_unloading_overlay;
	InfoOverlay m_leave_screen_overlay;
};